package com.sgb.kjwl.view.ui.fragment.self.company

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
import com.scwang.smart.refresh.layout.listener.ScrollBoundaryDecider
import com.sgb.kjwl.AppLazyFragment
import com.sgb.kjwl.BR
import com.sgb.kjwl.R
import com.sgb.kjwl.databinding.FragmentInviteBinding
import com.sgb.kjwl.view.ui.activity.self.company.InviteActivity
import com.sgb.kjwl.viewmodel.self.company.InviteFragmentViewModel
import com.swgk.core.recyclerview.decoration.RecyclerCustomDecoration


class InviteFragment : AppLazyFragment() {
    private lateinit var mBinding: FragmentInviteBinding
    lateinit var mViewModel: InviteFragmentViewModel
    private lateinit var mAdapter: InviteAdapter


    private var isLoadMore = false //是否加载更多
    private var isEnableLoadMore = false//是否能加载更多

    companion object {
        private const val KEY_NO = "key_no"
        fun newInstance(no: String): InviteFragment {
            val fragment = InviteFragment()
            val bundle = Bundle()
            bundle.putString(KEY_NO, no)
            fragment.arguments = bundle
            return fragment
        }
    }

    override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View? {
        mViewModel = InviteFragmentViewModel()
        mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_invite, container, false)
        mBinding.setVariable(BR.mmodel, mViewModel)
        mBinding.lifecycleOwner = this
        return mBinding.root
    }

    override fun initView() {
        super.initView()
        initRecyclerView()
    }

    /**
     * 业务逻辑刷新
     */
    public override fun onLazyLoad() {
        // TODO: 2021/11/16 0016  
        val key: String? = arguments?.getString(KEY_NO)
        if (key?.contains("商品")!!) {

        }
    }

    private fun initRecyclerView() {
        mBinding.recycleView.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
        // SwipeRefreshLayout 刷新
        mBinding.refreshLayout.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
            override fun onLoadMore(refreshLayout: RefreshLayout) {
                isLoadMore = true
                mBinding.refreshLayout.finishLoadMore(500)
            }

            override fun onRefresh(refreshLayout: RefreshLayout) {
                isLoadMore = false
                mBinding.refreshLayout.finishRefresh(500)
            }
        })
        //解决 在实现 上拉加载更多 和 下拉刷新 时  遇到item不在顶端就执行了刷新的方法和数据item没有填满屏幕也执行了加载更多
        mBinding.refreshLayout.setScrollBoundaryDecider(object : ScrollBoundaryDecider {
            override fun canRefresh(content: View): Boolean {
                if (mBinding.recycleView == null) return false
                return mBinding.recycleView.computeVerticalScrollOffset() === 0
            }

            override fun canLoadMore(content: View): Boolean {
                if (mBinding.recycleView == null) return false
                //整个View控件的高度
                val scrollRange: Int = mBinding.recycleView.computeVerticalScrollRange()
                //当前屏幕之前滑过的距离
                val scrollOffset: Int = mBinding.recycleView.computeVerticalScrollOffset()
                //当前屏幕显示的区域高度
                val scrollExtent: Int = mBinding.recycleView.computeVerticalScrollExtent()
                //获取recyclerView的高度
                val height: Int = mBinding.recycleView.height
                if (height > scrollRange) {
                    return false
                }
                return isEnableLoadMore && scrollRange <= scrollOffset + scrollExtent
            }
        })
        mBinding.recycleView.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
        mBinding.recycleView.setItemViewCacheSize(100)
        mBinding.recycleView.setHasFixedSize(true)
        mAdapter = InviteAdapter(R.layout.item_website_inquiry)
        mAdapter.bindToRecyclerView(mBinding.recycleView)
        val empty = LayoutInflater.from(activity).inflate(R.layout.layout_empty_view, mBinding.recycleView, false)
        empty.findViewById<TextView>(R.id.no_data_tv).text = "暂无内容"
        mAdapter.emptyView = empty
        mBinding.recycleView.addItemDecoration(
                RecyclerCustomDecoration(
                        0f,
                        0f,
                        0f,
                        resources.getDimension(R.dimen.dp1), resources.getColor(R.color.color_main_bg)
                )
        )
    }


    class InviteAdapter(@LayoutRes layoutId: Int) : BaseQuickAdapter<Any, BaseViewHolder>(layoutId) {
        override fun convert(helper: BaseViewHolder?, item: Any?) {

        }
    }
}